package leetcode.code733.FloodFill;

import leetcode.helper.HelpDebug;

public abstract class FloodFill implements IFloodFill {

	@Override
	public void debug1() {
//		输入:
//		image = [[1,1,1],[1,1,0],[1,0,1]]
//		sr = 1, sc = 1, newColor = 2
//		输出: [[2,2,2],[2,2,0],[2,0,1]]
//		解析:
//		在图像的正中间，(坐标(sr,sc)=(1,1)),
//		在路径上所有符合条件的像素点的颜色都被更改成2。
//		注意，右下角的像素没有更改为2，
//		因为它不是在上下左右四个方向上与初始点相连的像素点。

		int[][] image = new int[][] { { 1, 1, 1 }, { 1, 1, 0 }, { 1, 0, 1 } };
		int sr = 1;
		int sc = 1;
		int[] start = new int[] { 1, 1 };
		int newColor = 2;
		int[][] expect = new int[][] { { 2, 2, 2 }, { 2, 2, 0 }, { 2, 0, 1 } };
		HelpDebug.printInputs(expect, image, start, newColor);
		this.debug(image, sr, sc, newColor);
	}

	@Override
	public void debug2() {
		int[][] image = new int[][] { { 0, 0, 0 }, { 0, 1, 1 } };
		int sr = 1;
		int sc = 1;
		int[] start = new int[] { sr, sc };
		int newColor = 1;
		int[][] expect = new int[][] { { 2, 2, 2 }, { 2, 2, 0 }, { 2, 0, 1 } };
		HelpDebug.printInputs(expect, image, start, newColor);
		this.debug(image, sr, sc, newColor);
	}

	@Override
	public void debug3() {
		// TODO Auto-generated method stub

	}

	@Override
	public void debug4() {
		// TODO Auto-generated method stub

	}

	@Override
	abstract public int[][] floodFill(int[][] image, int sr, int sc, int newColor);

	@Override
	public int[][] debug(int[][] image, int sr, int sc, int newColor) {
		int[][] result = this.floodFill(image, sr, sc, newColor);
		HelpDebug.printArray2(result);
		return null;
	}

}
